def SelectRightSchool(schoolList,mustSchoolCode="010510"):
    """
    用于从满足学生分数条件的所有层次学校里，挑出一个学校给学生推荐志愿

    :param schoolList:dict，已分好层的学校列表
    :param mustSchoolCode:str，必须展示的学校，一般是本校
    :return: 返回推荐的学校列表，每个层次只有一个学校
    """
    Right_School = {}
    for key, value in schoolList.items():
        flag = False
        if len(value) != 0:  # 确定该项目下有筛选出来的学校
            for school in value:  # 遍历这些学校,并筛选出必须展示的学校
                if school[0] == mustSchoolCode:  # 如果必须展示的学校在列表里，将学校筛选出来
                    Right_School[key] = school
                    flag = True  # 表明筛选出必须要展示的学校了
                    break
            if flag:  # 如果筛选出必须展示的学校了，本层次的学校循环退出，进行下一层次学校的筛选
                continue
            # 对于前三个层次的学校，选择排名最后的学校，因为这样冲上的几率更大
            if key in ["TooFarList", "Uplist", "OptimalList"]:
                Right_School[key] = schoolList[key][-1]
            # 对于后三个层次的学校，选择排名最前的学校，因为这样学校更优质
            else:
                Right_School[key] = schoolList[key][0]  # 选出该项目排名第一的学校
        else:#如果该层次下没有学校入选，则将值置为空
            Right_School[key] = [None] * 10
    return Right_School


def SelectRightAreaSchool(schoolList, AreaList=["未央区"], dontSchoolList=["010506", "010530", "010531"]):
    """
    从所有的学校里筛选出对应的学校
    
    :param schoolList:嵌套的dict，表示需要进行筛选的原始数据，其结构类似于{'data1':[[school1],[school2]],"data2":[[school3],[school4]]}
    :param AreaList:需要筛选的区域列表，在这个列表内的区域中的所有学校会被筛选出来
    :param dontSchoolList:需要被屏蔽的学校的代码列表，在这个列表中的学校不会被推荐
    :return:经过筛选后的所有学校
    """
    Right_Area_School = {}
    for key, value in schoolList.items():
        Right_Area_School[key] = []
        if len(value) != 0:  # 确定该项目下有筛选出来的学校
            for school in value:  # 遍历区域列表里的学校,屏蔽三个学校
                if school[6] in AreaList and school[0] not in dontSchoolList:  # 如果区域在列表里，将该区域的学校筛选出来
                    Right_Area_School[key].append(school)
    return Right_Area_School
